package com.miracle.anychatdemo;

import android.annotation.SuppressLint;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.ImageView;

/**
 *  根据状态显示不同背景的Button
 *
 *  使用方法：
 *  属性设置方法：
 *  1.在布局界面根布局加入  xmlns:app="http://schemas.android.com/apk/res-auto"
 *  2.控件加入属性
 *                app:normalbg="@drawable/ic_voip_answer_icons"          图片正常状态下背景属性
                  app:touchbg ="@drawable/ic_voip_answer_press_icons"    图片被触摸状态下背景属性

   代码设置方法：
        直接一行代码即可：
          setStateChangedBackground(R.mipmap.previous_unpress,   图片正常状态下背景属性
                               R.mipmap.previous_pressed);       图片被触摸状态下背景属性
 */
@SuppressLint("AppCompatCustomView")
public class StateChangedButton extends ImageView{

    /*正常的背景*/
    private Drawable mNormalbg;
    /*触碰时的背景*/
    private Drawable mTouchbg;

    private Context mContext;

    public StateChangedButton(Context context) {
        super(context);
        init(context,null);
    }

    public StateChangedButton(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(context,attrs);
    }

    public StateChangedButton(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    private void init(Context context, AttributeSet attrs) {
        this.mContext =context;
        TypedArray a = context.obtainStyledAttributes(attrs,
                R.styleable.mystatechangedbutton_background);
        mNormalbg =a.getDrawable(R.styleable.mystatechangedbutton_background_normalbg);
        mTouchbg = a.getDrawable(R.styleable.mystatechangedbutton_background_touchbg);
        setBackgroundDrawable(mNormalbg);
        setClickable(true);
    }

    public void setStateChangedBackground(int normalbg,int touchbg){
        this.mNormalbg = mContext.getResources().getDrawable(normalbg);
        this.mTouchbg = mContext.getResources().getDrawable(touchbg);
        setBackgroundDrawable(this.mNormalbg);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {

        switch (event.getAction()){
            case MotionEvent.ACTION_DOWN:
                setBackgroundDrawable(mTouchbg);
                break;
            case MotionEvent.ACTION_UP:
                setBackgroundDrawable(mNormalbg);
                break;
        }
        return super.onTouchEvent(event);
    }
}
